/*!
 * VERSION: 1.17.0
 * DATE: 2015-05-27
 * UPDATES AND DOCS AT: http://greensock.com
 *
 * @license Copyright (c) 2008-2015, GreenSock. All rights reserved.
 * This work is subject to the terms at http://greensock.com/standard-license or for
 * Club GreenSock members, the software agreement that was issued with your membership.
 * 
 * @author: Jack Doyle, jack@greensock.com
 */
var _gsScope = "undefined" != typeof module && module.exports && "undefined" != typeof global ? global : this || window;
(_gsScope._gsQueue || (_gsScope._gsQueue = [])).push(function() {
    "use strict";
    _gsScope._gsDefine("plugins.CSSPlugin", ["plugins.TweenPlugin", "TweenLite"], function(t, e) {
        var i, r, s, n, a = function() {
            t.call(this, "css"),
            this._overwriteProps.length = 0,
            this.setRatio = a.prototype.setRatio
        }, o = _gsScope._gsDefine.globals, l = {}, h = a.prototype = new t("css");
        h.constructor = a,
        a.version = "1.17.0",
        a.API = 2,
        a.defaultTransformPerspective = 0,
        a.defaultSkewType = "compensated",
        a.defaultSmoothOrigin = !0,
        h = "px",
        a.suffixMap = {
            top: h,
            right: h,
            bottom: h,
            left: h,
            width: h,
            height: h,
            fontSize: h,
            padding: h,
            margin: h,
            perspective: h,
            lineHeight: ""
        };
        var u, f, c, p, _, d, m = /(?:\d|\-\d|\.\d|\-\.\d)+/g, g = /(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g, v = /(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b)/gi, y = /(?![+-]?\d*\.?\d+|[+-]|e[+-]\d+)[^0-9]/g, x = /(?:\d|\-|\+|=|#|\.)*/g, T = /opacity *= *([^)]*)/i, w = /opacity:([^;]*)/i, b = /alpha\(opacity *=.+?\)/i, P = /^(rgb|hsl)/, S = /([A-Z])/g, O = /-([a-z])/gi, k = /(^(?:url\(\"|url\())|(?:(\"\))$|\)$)/gi, C = function(t, e) {
            return e.toUpperCase()
        }, R = /(?:Left|Right|Width)/i, A = /(M11|M12|M21|M22)=[\d\-\.e]+/gi, M = /progid\:DXImageTransform\.Microsoft\.Matrix\(.+?\)/i, D = /,(?=[^\)]*(?:\(|$))/gi, N = Math.PI / 180, L = 180 / Math.PI, F = {}, X = document, z = function(t) {
            return X.createElementNS ? X.createElementNS("http://www.w3.org/1999/xhtml", t) : X.createElement(t)
        }, B = z("div"), E = z("img"), I = a._internals = {
            _specialProps: l
        }, Y = navigator.userAgent, W = function() {
            var t = Y.indexOf("Android")
              , e = z("a");
            return c = -1 !== Y.indexOf("Safari") && -1 === Y.indexOf("Chrome") && (-1 === t || Number(Y.substr(t + 8, 1)) > 3),
            _ = c && 6 > Number(Y.substr(Y.indexOf("Version/") + 8, 1)),
            p = -1 !== Y.indexOf("Firefox"),
            (/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(Y) || /Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(Y)) && (d = parseFloat(RegExp.$1)),
            e ? (e.style.cssText = "top:1px;opacity:.55;",
            /^0.55/.test(e.style.opacity)) : !1
        }(), V = function(t) {
            return T.test("string" == typeof t ? t : (t.currentStyle ? t.currentStyle.filter : t.style.filter) || "") ? parseFloat(RegExp.$1) / 100 : 1
        }, j = function(t) {
            window.console && console.log(t)
        }, G = "", U = "", q = function(t, e) {
            e = e || B;
            var i, r, s = e.style;
            if (void 0 !== s[t])
                return t;
            for (t = t.charAt(0).toUpperCase() + t.substr(1),
            i = ["O", "Moz", "ms", "Ms", "Webkit"],
            r = 5; --r > -1 && void 0 === s[i[r] + t]; )
                ;
            return r >= 0 ? (U = 3 === r ? "ms" : i[r],
            G = "-" + U.toLowerCase() + "-",
            U + t) : null
        }, H = X.defaultView ? X.defaultView.getComputedStyle : function() {}
        , Q = a.getStyle = function(t, e, i, r, s) {
            var n;
            return W || "opacity" !== e ? (!r && t.style[e] ? n = t.style[e] : (i = i || H(t)) ? n = i[e] || i.getPropertyValue(e) || i.getPropertyValue(e.replace(S, "-$1").toLowerCase()) : t.currentStyle && (n = t.currentStyle[e]),
            null == s || n && "none" !== n && "auto" !== n && "auto auto" !== n ? n : s) : V(t)
        }
        , Z = I.convertToPixels = function(t, i, r, s, n) {
            if ("px" === s || !s)
                return r;
            if ("auto" === s || !r)
                return 0;
            var o, l, h, u = R.test(i), f = t, c = B.style, p = 0 > r;
            if (p && (r = -r),
            "%" === s && -1 !== i.indexOf("border"))
                o = r / 100 * (u ? t.clientWidth : t.clientHeight);
            else {
                if (c.cssText = "border:0 solid red;position:" + Q(t, "position") + ";line-height:0;",
                "%" !== s && f.appendChild)
                    c[u ? "borderLeftWidth" : "borderTopWidth"] = r + s;
                else {
                    if (f = t.parentNode || X.body,
                    l = f._gsCache,
                    h = e.ticker.frame,
                    l && u && l.time === h)
                        return l.width * r / 100;
                    c[u ? "width" : "height"] = r + s
                }
                f.appendChild(B),
                o = parseFloat(B[u ? "offsetWidth" : "offsetHeight"]),
                f.removeChild(B),
                u && "%" === s && a.cacheWidths !== !1 && (l = f._gsCache = f._gsCache || {},
                l.time = h,
                l.width = 100 * (o / r)),
                0 !== o || n || (o = Z(t, i, r, s, !0))
            }
            return p ? -o : o
        }
        , $ = I.calculateOffset = function(t, e, i) {
            if ("absolute" !== Q(t, "position", i))
                return 0;
            var r = "left" === e ? "Left" : "Top"
              , s = Q(t, "margin" + r, i);
            return t["offset" + r] - (Z(t, e, parseFloat(s), s.replace(x, "")) || 0)
        }
        , K = function(t, e) {
            var i, r, s, n = {};
            if (e = e || H(t, null))
                if (i = e.length)
                    for (; --i > -1; )
                        s = e[i],
                        (-1 === s.indexOf("-transform") || Pe === s) && (n[s.replace(O, C)] = e.getPropertyValue(s));
                else
                    for (i in e)
                        (-1 === i.indexOf("Transform") || be === i) && (n[i] = e[i]);
            else if (e = t.currentStyle || t.style)
                for (i in e)
                    "string" == typeof i && void 0 === n[i] && (n[i.replace(O, C)] = e[i]);
            return W || (n.opacity = V(t)),
            r = Xe(t, e, !1),
            n.rotation = r.rotation,
            n.skewX = r.skewX,
            n.scaleX = r.scaleX,
            n.scaleY = r.scaleY,
            n.x = r.x,
            n.y = r.y,
            Oe && (n.z = r.z,
            n.rotationX = r.rotationX,
            n.rotationY = r.rotationY,
            n.scaleZ = r.scaleZ),
            n.filters && delete n.filters,
            n
        }, J = function(t, e, i, r, s) {
            var n, a, o, l = {}, h = t.style;
            for (a in i)
                "cssText" !== a && "length" !== a && isNaN(a) && (e[a] !== (n = i[a]) || s && s[a]) && -1 === a.indexOf("Origin") && ("number" == typeof n || "string" == typeof n) && (l[a] = "auto" !== n || "left" !== a && "top" !== a ? "" !== n && "auto" !== n && "none" !== n || "string" != typeof e[a] || "" === e[a].replace(y, "") ? n : 0 : $(t, a),
                void 0 !== h[a] && (o = new pe(h,a,h[a],o)));
            if (r)
                for (a in r)
                    "className" !== a && (l[a] = r[a]);
            return {
                difs: l,
                firstMPT: o
            }
        }, te = {
            width: ["Left", "Right"],
            height: ["Top", "Bottom"]
        }, ee = ["marginLeft", "marginRight", "marginTop", "marginBottom"], ie = function(t, e, i) {
            var r = parseFloat("width" === e ? t.offsetWidth : t.offsetHeight)
              , s = te[e]
              , n = s.length;
            for (i = i || H(t, null); --n > -1; )
                r -= parseFloat(Q(t, "padding" + s[n], i, !0)) || 0,
                r -= parseFloat(Q(t, "border" + s[n] + "Width", i, !0)) || 0;
            return r
        }, re = function(t, e) {
            (null == t || "" === t || "auto" === t || "auto auto" === t) && (t = "0 0");
            var i = t.split(" ")
              , r = -1 !== t.indexOf("left") ? "0%" : -1 !== t.indexOf("right") ? "100%" : i[0]
              , s = -1 !== t.indexOf("top") ? "0%" : -1 !== t.indexOf("bottom") ? "100%" : i[1];
            return null == s ? s = "center" === r ? "50%" : "0" : "center" === s && (s = "50%"),
            ("center" === r || isNaN(parseFloat(r)) && -1 === (r + "").indexOf("=")) && (r = "50%"),
            t = r + " " + s + (i.length > 2 ? " " + i[2] : ""),
            e && (e.oxp = -1 !== r.indexOf("%"),
            e.oyp = -1 !== s.indexOf("%"),
            e.oxr = "=" === r.charAt(1),
            e.oyr = "=" === s.charAt(1),
            e.ox = parseFloat(r.replace(y, "")),
            e.oy = parseFloat(s.replace(y, "")),
            e.v = t),
            e || t
        }, se = function(t, e) {
            return "string" == typeof t && "=" === t.charAt(1) ? parseInt(t.charAt(0) + "1", 10) * parseFloat(t.substr(2)) : parseFloat(t) - parseFloat(e)
        }, ne = function(t, e) {
            return null == t ? e : "string" == typeof t && "=" === t.charAt(1) ? parseInt(t.charAt(0) + "1", 10) * parseFloat(t.substr(2)) + e : parseFloat(t)
        }, ae = function(t, e, i, r) {
            var s, n, a, o, l, h = 1e-6;
            return null == t ? o = e : "number" == typeof t ? o = t : (s = 360,
            n = t.split("_"),
            l = "=" === t.charAt(1),
            a = (l ? parseInt(t.charAt(0) + "1", 10) * parseFloat(n[0].substr(2)) : parseFloat(n[0])) * (-1 === t.indexOf("rad") ? 1 : L) - (l ? 0 : e),
            n.length && (r && (r[i] = e + a),
            -1 !== t.indexOf("short") && (a %= s,
            a !== a % (s / 2) && (a = 0 > a ? a + s : a - s)),
            -1 !== t.indexOf("_cw") && 0 > a ? a = (a + 9999999999 * s) % s - (0 | a / s) * s : -1 !== t.indexOf("ccw") && a > 0 && (a = (a - 9999999999 * s) % s - (0 | a / s) * s)),
            o = e + a),
            h > o && o > -h && (o = 0),
            o
        }, oe = {
            aqua: [0, 255, 255],
            lime: [0, 255, 0],
            silver: [192, 192, 192],
            black: [0, 0, 0],
            maroon: [128, 0, 0],
            teal: [0, 128, 128],
            blue: [0, 0, 255],
            navy: [0, 0, 128],
            white: [255, 255, 255],
            fuchsia: [255, 0, 255],
            olive: [128, 128, 0],
            yellow: [255, 255, 0],
            orange: [255, 165, 0],
            gray: [128, 128, 128],
            purple: [128, 0, 128],
            green: [0, 128, 0],
            red: [255, 0, 0],
            pink: [255, 192, 203],
            cyan: [0, 255, 255],
            transparent: [255, 255, 255, 0]
        }, le = function(t, e, i) {
            return t = 0 > t ? t + 1 : t > 1 ? t - 1 : t,
            0 | 255 * (1 > 6 * t ? e + 6 * (i - e) * t : .5 > t ? i : 2 > 3 * t ? e + 6 * (i - e) * (2 / 3 - t) : e) + .5
        }, he = a.parseColor = function(t) {
            var e, i, r, s, n, a;
            return t && "" !== t ? "number" == typeof t ? [t >> 16, 255 & t >> 8, 255 & t] : ("," === t.charAt(t.length - 1) && (t = t.substr(0, t.length - 1)),
            oe[t] ? oe[t] : "#" === t.charAt(0) ? (4 === t.length && (e = t.charAt(1),
            i = t.charAt(2),
            r = t.charAt(3),
            t = "#" + e + e + i + i + r + r),
            t = parseInt(t.substr(1), 16),
            [t >> 16, 255 & t >> 8, 255 & t]) : "hsl" === t.substr(0, 3) ? (t = t.match(m),
            s = Number(t[0]) % 360 / 360,
            n = Number(t[1]) / 100,
            a = Number(t[2]) / 100,
            i = .5 >= a ? a * (n + 1) : a + n - a * n,
            e = 2 * a - i,
            t.length > 3 && (t[3] = Number(t[3])),
            t[0] = le(s + 1 / 3, e, i),
            t[1] = le(s, e, i),
            t[2] = le(s - 1 / 3, e, i),
            t) : (t = t.match(m) || oe.transparent,
            t[0] = Number(t[0]),
            t[1] = Number(t[1]),
            t[2] = Number(t[2]),
            t.length > 3 && (t[3] = Number(t[3])),
            t)) : oe.black
        }
        , ue = "(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#.+?\\b";
        for (h in oe)
            ue += "|" + h + "\\b";
        ue = RegExp(ue + ")", "gi");
        var fe = function(t, e, i, r) {
            if (null == t)
                return function(t) {
                    return t
                }
                ;
            var s, n = e ? (t.match(ue) || [""])[0] : "", a = t.split(n).join("").match(v) || [], o = t.substr(0, t.indexOf(a[0])), l = ")" === t.charAt(t.length - 1) ? ")" : "", h = -1 !== t.indexOf(" ") ? " " : ",", u = a.length, f = u > 0 ? a[0].replace(m, "") : "";
            return u ? s = e ? function(t) {
                var e, c, p, _;
                if ("number" == typeof t)
                    t += f;
                else if (r && D.test(t)) {
                    for (_ = t.replace(D, "|").split("|"),
                    p = 0; _.length > p; p++)
                        _[p] = s(_[p]);
                    return _.join(",")
                }
                if (e = (t.match(ue) || [n])[0],
                c = t.split(e).join("").match(v) || [],
                p = c.length,
                u > p--)
                    for (; u > ++p; )
                        c[p] = i ? c[0 | (p - 1) / 2] : a[p];
                return o + c.join(h) + h + e + l + (-1 !== t.indexOf("inset") ? " inset" : "")
            }
            : function(t) {
                var e, n, c;
                if ("number" == typeof t)
                    t += f;
                else if (r && D.test(t)) {
                    for (n = t.replace(D, "|").split("|"),
                    c = 0; n.length > c; c++)
                        n[c] = s(n[c]);
                    return n.join(",")
                }
                if (e = t.match(v) || [],
                c = e.length,
                u > c--)
                    for (; u > ++c; )
                        e[c] = i ? e[0 | (c - 1) / 2] : a[c];
                return o + e.join(h) + l
            }
            : function(t) {
                return t
            }
        }
          , ce = function(t) {
            return t = t.split(","),
            function(e, i, r, s, n, a, o) {
                var l, h = (i + "").split(" ");
                for (o = {},
                l = 0; 4 > l; l++)
                    o[t[l]] = h[l] = h[l] || h[(l - 1) / 2 >> 0];
                return s.parse(e, o, n, a)
            }
        }
          , pe = (I._setPluginRatio = function(t) {
            this.plugin.setRatio(t);
            for (var e, i, r, s, n = this.data, a = n.proxy, o = n.firstMPT, l = 1e-6; o; )
                e = a[o.v],
                o.r ? e = Math.round(e) : l > e && e > -l && (e = 0),
                o.t[o.p] = e,
                o = o._next;
            if (n.autoRotate && (n.autoRotate.rotation = a.rotation),
            1 === t)
                for (o = n.firstMPT; o; ) {
                    if (i = o.t,
                    i.type) {
                        if (1 === i.type) {
                            for (s = i.xs0 + i.s + i.xs1,
                            r = 1; i.l > r; r++)
                                s += i["xn" + r] + i["xs" + (r + 1)];
                            i.e = s
                        }
                    } else
                        i.e = i.s + i.xs0;
                    o = o._next
                }
        }
        ,
        function(t, e, i, r, s) {
            this.t = t,
            this.p = e,
            this.v = i,
            this.r = s,
            r && (r._prev = this,
            this._next = r)
        }
        )
          , _e = (I._parseToProxy = function(t, e, i, r, s, n) {
            var a, o, l, h, u, f = r, c = {}, p = {}, _ = i._transform, d = F;
            for (i._transform = null,
            F = e,
            r = u = i.parse(t, e, r, s),
            F = d,
            n && (i._transform = _,
            f && (f._prev = null,
            f._prev && (f._prev._next = null))); r && r !== f; ) {
                if (1 >= r.type && (o = r.p,
                p[o] = r.s + r.c,
                c[o] = r.s,
                n || (h = new pe(r,"s",o,h,r.r),
                r.c = 0),
                1 === r.type))
                    for (a = r.l; --a > 0; )
                        l = "xn" + a,
                        o = r.p + "_" + l,
                        p[o] = r.data[l],
                        c[o] = r[l],
                        n || (h = new pe(r,l,o,h,r.rxp[l]));
                r = r._next
            }
            return {
                proxy: c,
                end: p,
                firstMPT: h,
                pt: u
            }
        }
        ,
        I.CSSPropTween = function(t, e, r, s, a, o, l, h, u, f, c) {
            this.t = t,
            this.p = e,
            this.s = r,
            this.c = s,
            this.n = l || e,
            t instanceof _e || n.push(this.n),
            this.r = h,
            this.type = o || 0,
            u && (this.pr = u,
            i = !0),
            this.b = void 0 === f ? r : f,
            this.e = void 0 === c ? r + s : c,
            a && (this._next = a,
            a._prev = this)
        }
        )
          , de = function(t, e, i, r, s, n) {
            var a = new _e(t,e,i,r - i,s,-1,n);
            return a.b = i,
            a.e = a.xs0 = r,
            a
        }
          , me = a.parseComplex = function(t, e, i, r, s, n, a, o, l, h) {
            i = i || n || "",
            a = new _e(t,e,0,0,a,h ? 2 : 1,null,!1,o,i,r),
            r += "";
            var f, c, p, _, d, v, y, x, T, w, b, S, O = i.split(", ").join(",").split(" "), k = r.split(", ").join(",").split(" "), C = O.length, R = u !== !1;
            for ((-1 !== r.indexOf(",") || -1 !== i.indexOf(",")) && (O = O.join(" ").replace(D, ", ").split(" "),
            k = k.join(" ").replace(D, ", ").split(" "),
            C = O.length),
            C !== k.length && (O = (n || "").split(" "),
            C = O.length),
            a.plugin = l,
            a.setRatio = h,
            f = 0; C > f; f++)
                if (_ = O[f],
                d = k[f],
                x = parseFloat(_),
                x || 0 === x)
                    a.appendXtra("", x, se(d, x), d.replace(g, ""), R && -1 !== d.indexOf("px"), !0);
                else if (s && ("#" === _.charAt(0) || oe[_] || P.test(_)))
                    S = "," === d.charAt(d.length - 1) ? ")," : ")",
                    _ = he(_),
                    d = he(d),
                    T = _.length + d.length > 6,
                    T && !W && 0 === d[3] ? (a["xs" + a.l] += a.l ? " transparent" : "transparent",
                    a.e = a.e.split(k[f]).join("transparent")) : (W || (T = !1),
                    a.appendXtra(T ? "rgba(" : "rgb(", _[0], d[0] - _[0], ",", !0, !0).appendXtra("", _[1], d[1] - _[1], ",", !0).appendXtra("", _[2], d[2] - _[2], T ? "," : S, !0),
                    T && (_ = 4 > _.length ? 1 : _[3],
                    a.appendXtra("", _, (4 > d.length ? 1 : d[3]) - _, S, !1)));
                else if (v = _.match(m)) {
                    if (y = d.match(g),
                    !y || y.length !== v.length)
                        return a;
                    for (p = 0,
                    c = 0; v.length > c; c++)
                        b = v[c],
                        w = _.indexOf(b, p),
                        a.appendXtra(_.substr(p, w - p), Number(b), se(y[c], b), "", R && "px" === _.substr(w + b.length, 2), 0 === c),
                        p = w + b.length;
                    a["xs" + a.l] += _.substr(p)
                } else
                    a["xs" + a.l] += a.l ? " " + _ : _;
            if (-1 !== r.indexOf("=") && a.data) {
                for (S = a.xs0 + a.data.s,
                f = 1; a.l > f; f++)
                    S += a["xs" + f] + a.data["xn" + f];
                a.e = S + a["xs" + f]
            }
            return a.l || (a.type = -1,
            a.xs0 = a.e),
            a.xfirst || a
        }
          , ge = 9;
        for (h = _e.prototype,
        h.l = h.pr = 0; --ge > 0; )
            h["xn" + ge] = 0,
            h["xs" + ge] = "";
        h.xs0 = "",
        h._next = h._prev = h.xfirst = h.data = h.plugin = h.setRatio = h.rxp = null,
        h.appendXtra = function(t, e, i, r, s, n) {
            var a = this
              , o = a.l;
            return a["xs" + o] += n && o ? " " + t : t || "",
            i || 0 === o || a.plugin ? (a.l++,
            a.type = a.setRatio ? 2 : 1,
            a["xs" + a.l] = r || "",
            o > 0 ? (a.data["xn" + o] = e + i,
            a.rxp["xn" + o] = s,
            a["xn" + o] = e,
            a.plugin || (a.xfirst = new _e(a,"xn" + o,e,i,a.xfirst || a,0,a.n,s,a.pr),
            a.xfirst.xs0 = 0),
            a) : (a.data = {
                s: e + i
            },
            a.rxp = {},
            a.s = e,
            a.c = i,
            a.r = s,
            a)) : (a["xs" + o] += e + (r || ""),
            a)
        }
        ;
        var ve = function(t, e) {
            e = e || {},
            this.p = e.prefix ? q(t) || t : t,
            l[t] = l[this.p] = this,
            this.format = e.formatter || fe(e.defaultValue, e.color, e.collapsible, e.multi),
            e.parser && (this.parse = e.parser),
            this.clrs = e.color,
            this.multi = e.multi,
            this.keyword = e.keyword,
            this.dflt = e.defaultValue,
            this.pr = e.priority || 0
        }
          , ye = I._registerComplexSpecialProp = function(t, e, i) {
            "object" != typeof e && (e = {
                parser: i
            });
            var r, s, n = t.split(","), a = e.defaultValue;
            for (i = i || [a],
            r = 0; n.length > r; r++)
                e.prefix = 0 === r && e.prefix,
                e.defaultValue = i[r] || a,
                s = new ve(n[r],e)
        }
          , xe = function(t) {
            if (!l[t]) {
                var e = t.charAt(0).toUpperCase() + t.substr(1) + "Plugin";
                ye(t, {
                    parser: function(t, i, r, s, n, a, h) {
                        var u = o.com.greensock.plugins[e];
                        return u ? (u._cssRegister(),
                        l[r].parse(t, i, r, s, n, a, h)) : (j("Error: " + e + " js file not loaded."),
                        n)
                    }
                })
            }
        };
        h = ve.prototype,
        h.parseComplex = function(t, e, i, r, s, n) {
            var a, o, l, h, u, f, c = this.keyword;
            if (this.multi && (D.test(i) || D.test(e) ? (o = e.replace(D, "|").split("|"),
            l = i.replace(D, "|").split("|")) : c && (o = [e],
            l = [i])),
            l) {
                for (h = l.length > o.length ? l.length : o.length,
                a = 0; h > a; a++)
                    e = o[a] = o[a] || this.dflt,
                    i = l[a] = l[a] || this.dflt,
                    c && (u = e.indexOf(c),
                    f = i.indexOf(c),
                    u !== f && (-1 === f ? o[a] = o[a].split(c).join("") : -1 === u && (o[a] += " " + c)));
                e = o.join(", "),
                i = l.join(", ")
            }
            return me(t, this.p, e, i, this.clrs, this.dflt, r, this.pr, s, n)
        }
        ,
        h.parse = function(t, e, i, r, n, a) {
            return this.parseComplex(t.style, this.format(Q(t, this.p, s, !1, this.dflt)), this.format(e), n, a)
        }
        ,
        a.registerSpecialProp = function(t, e, i) {
            ye(t, {
                parser: function(t, r, s, n, a, o) {
                    var l = new _e(t,s,0,0,a,2,s,!1,i);
                    return l.plugin = o,
                    l.setRatio = e(t, r, n._tween, s),
                    l
                },
                priority: i
            })
        }
        ,
        a.useSVGTransformAttr = c || p;
        var Te, we = "scaleX,scaleY,scaleZ,x,y,z,skewX,skewY,rotation,rotationX,rotationY,perspective,xPercent,yPercent".split(","), be = q("transform"), Pe = G + "transform", Se = q("transformOrigin"), Oe = null !== q("perspective"), ke = I.Transform = function() {
            this.perspective = parseFloat(a.defaultTransformPerspective) || 0,
            this.force3D = a.defaultForce3D !== !1 && Oe ? a.defaultForce3D || "auto" : !1
        }
        , Ce = window.SVGElement, Re = function(t, e, i) {
            var r, s = X.createElementNS("http://www.w3.org/2000/svg", t), n = /([a-z])([A-Z])/g;
            for (r in i)
                s.setAttributeNS(null, r.replace(n, "$1-$2").toLowerCase(), i[r]);
            return e.appendChild(s),
            s
        }, Ae = X.documentElement, Me = function() {
            var t, e, i, r = d || /Android/i.test(Y) && !window.chrome;
            return X.createElementNS && !r && (t = Re("svg", Ae),
            e = Re("rect", t, {
                width: 100,
                height: 50,
                x: 100
            }),
            i = e.getBoundingClientRect().width,
            e.style[Se] = "50% 50%",
            e.style[be] = "scaleX(0.5)",
            r = i === e.getBoundingClientRect().width && !(p && Oe),
            Ae.removeChild(t)),
            r
        }(), De = function(t, e, i, r, s) {
            var n, o, l, h, u, f, c, p, _, d, m, g, v, y, x = t._gsTransform, T = Fe(t, !0);
            x && (v = x.xOrigin,
            y = x.yOrigin),
            (!r || 2 > (n = r.split(" ")).length) && (c = t.getBBox(),
            e = re(e).split(" "),
            n = [(-1 !== e[0].indexOf("%") ? parseFloat(e[0]) / 100 * c.width : parseFloat(e[0])) + c.x, (-1 !== e[1].indexOf("%") ? parseFloat(e[1]) / 100 * c.height : parseFloat(e[1])) + c.y]),
            i.xOrigin = h = parseFloat(n[0]),
            i.yOrigin = u = parseFloat(n[1]),
            r && T !== Le && (f = T[0],
            c = T[1],
            p = T[2],
            _ = T[3],
            d = T[4],
            m = T[5],
            g = f * _ - c * p,
            o = h * (_ / g) + u * (-p / g) + (p * m - _ * d) / g,
            l = h * (-c / g) + u * (f / g) - (f * m - c * d) / g,
            h = i.xOrigin = n[0] = o,
            u = i.yOrigin = n[1] = l),
            x && (s || s !== !1 && a.defaultSmoothOrigin !== !1 ? (o = h - v,
            l = u - y,
            x.xOffset += o * T[0] + l * T[2] - o,
            x.yOffset += o * T[1] + l * T[3] - l) : x.xOffset = x.yOffset = 0),
            t.setAttribute("data-svg-origin", n.join(" "))
        }, Ne = function(t) {
            return !!(Ce && "function" == typeof t.getBBox && t.getCTM && (!t.parentNode || t.parentNode.getBBox && t.parentNode.getCTM))
        }, Le = [1, 0, 0, 1, 0, 0], Fe = function(t, e) {
            var i, r, s, n, a, o = t._gsTransform || new ke, l = 1e5;
            if (be ? r = Q(t, Pe, null, !0) : t.currentStyle && (r = t.currentStyle.filter.match(A),
            r = r && 4 === r.length ? [r[0].substr(4), Number(r[2].substr(4)), Number(r[1].substr(4)), r[3].substr(4), o.x || 0, o.y || 0].join(",") : ""),
            i = !r || "none" === r || "matrix(1, 0, 0, 1, 0, 0)" === r,
            (o.svg || t.getBBox && Ne(t)) && (i && -1 !== (t.style[be] + "").indexOf("matrix") && (r = t.style[be],
            i = 0),
            s = t.getAttribute("transform"),
            i && s && (-1 !== s.indexOf("matrix") ? (r = s,
            i = 0) : -1 !== s.indexOf("translate") && (r = "matrix(1,0,0,1," + s.match(/(?:\-|\b)[\d\-\.e]+\b/gi).join(",") + ")",
            i = 0))),
            i)
                return Le;
            for (s = (r || "").match(/(?:\-|\b)[\d\-\.e]+\b/gi) || [],
            ge = s.length; --ge > -1; )
                n = Number(s[ge]),
                s[ge] = (a = n - (n |= 0)) ? (0 | a * l + (0 > a ? -.5 : .5)) / l + n : n;
            return e && s.length > 6 ? [s[0], s[1], s[4], s[5], s[12], s[13]] : s
        }, Xe = I.getTransform = function(t, i, r, n) {
            if (t._gsTransform && r && !n)
                return t._gsTransform;
            var o, l, h, u, f, c, p = r ? t._gsTransform || new ke : new ke, _ = 0 > p.scaleX, d = 2e-5, m = 1e5, g = Oe ? parseFloat(Q(t, Se, i, !1, "0 0 0").split(" ")[2]) || p.zOrigin || 0 : 0, v = parseFloat(a.defaultTransformPerspective) || 0;
            if (p.svg = !(!t.getBBox || !Ne(t)),
            p.svg && (De(t, Q(t, Se, s, !1, "50% 50%") + "", p, t.getAttribute("data-svg-origin")),
            Te = a.useSVGTransformAttr || Me),
            o = Fe(t),
            o !== Le) {
                if (16 === o.length) {
                    var y, x, T, w, b, P = o[0], S = o[1], O = o[2], k = o[3], C = o[4], R = o[5], A = o[6], M = o[7], D = o[8], N = o[9], F = o[10], X = o[12], z = o[13], B = o[14], E = o[11], I = Math.atan2(A, F);
                    p.zOrigin && (B = -p.zOrigin,
                    X = D * B - o[12],
                    z = N * B - o[13],
                    B = F * B + p.zOrigin - o[14]),
                    p.rotationX = I * L,
                    I && (w = Math.cos(-I),
                    b = Math.sin(-I),
                    y = C * w + D * b,
                    x = R * w + N * b,
                    T = A * w + F * b,
                    D = C * -b + D * w,
                    N = R * -b + N * w,
                    F = A * -b + F * w,
                    E = M * -b + E * w,
                    C = y,
                    R = x,
                    A = T),
                    I = Math.atan2(D, F),
                    p.rotationY = I * L,
                    I && (w = Math.cos(-I),
                    b = Math.sin(-I),
                    y = P * w - D * b,
                    x = S * w - N * b,
                    T = O * w - F * b,
                    N = S * b + N * w,
                    F = O * b + F * w,
                    E = k * b + E * w,
                    P = y,
                    S = x,
                    O = T),
                    I = Math.atan2(S, P),
                    p.rotation = I * L,
                    I && (w = Math.cos(-I),
                    b = Math.sin(-I),
                    P = P * w + C * b,
                    x = S * w + R * b,
                    R = S * -b + R * w,
                    A = O * -b + A * w,
                    S = x),
                    p.rotationX && Math.abs(p.rotationX) + Math.abs(p.rotation) > 359.9 && (p.rotationX = p.rotation = 0,
                    p.rotationY += 180),
                    p.scaleX = (0 | Math.sqrt(P * P + S * S) * m + .5) / m,
                    p.scaleY = (0 | Math.sqrt(R * R + N * N) * m + .5) / m,
                    p.scaleZ = (0 | Math.sqrt(A * A + F * F) * m + .5) / m,
                    p.skewX = 0,
                    p.perspective = E ? 1 / (0 > E ? -E : E) : 0,
                    p.x = X,
                    p.y = z,
                    p.z = B,
                    p.svg && (p.x -= p.xOrigin - (p.xOrigin * P - p.yOrigin * C),
                    p.y -= p.yOrigin - (p.yOrigin * S - p.xOrigin * R))
                } else if (!(Oe && !n && o.length && p.x === o[4] && p.y === o[5] && (p.rotationX || p.rotationY) || void 0 !== p.x && "none" === Q(t, "display", i))) {
                    var Y = o.length >= 6
                      , W = Y ? o[0] : 1
                      , V = o[1] || 0
                      , j = o[2] || 0
                      , G = Y ? o[3] : 1;
                    p.x = o[4] || 0,
                    p.y = o[5] || 0,
                    h = Math.sqrt(W * W + V * V),
                    u = Math.sqrt(G * G + j * j),
                    f = W || V ? Math.atan2(V, W) * L : p.rotation || 0,
                    c = j || G ? Math.atan2(j, G) * L + f : p.skewX || 0,
                    Math.abs(c) > 90 && 270 > Math.abs(c) && (_ ? (h *= -1,
                    c += 0 >= f ? 180 : -180,
                    f += 0 >= f ? 180 : -180) : (u *= -1,
                    c += 0 >= c ? 180 : -180)),
                    p.scaleX = h,
                    p.scaleY = u,
                    p.rotation = f,
                    p.skewX = c,
                    Oe && (p.rotationX = p.rotationY = p.z = 0,
                    p.perspective = v,
                    p.scaleZ = 1),
                    p.svg && (p.x -= p.xOrigin - (p.xOrigin * W + p.yOrigin * j),
                    p.y -= p.yOrigin - (p.xOrigin * V + p.yOrigin * G))
                }
                p.zOrigin = g;
                for (l in p)
                    d > p[l] && p[l] > -d && (p[l] = 0)
            }
            return r && (t._gsTransform = p,
            p.svg && (Te && t.style[be] ? e.delayedCall(.001, function() {
                Ie(t.style, be)
            }) : !Te && t.getAttribute("transform") && e.delayedCall(.001, function() {
                t.removeAttribute("transform")
            }))),
            p
        }
        , ze = function(t) {
            var e, i, r = this.data, s = -r.rotation * N, n = s + r.skewX * N, a = 1e5, o = (0 | Math.cos(s) * r.scaleX * a) / a, l = (0 | Math.sin(s) * r.scaleX * a) / a, h = (0 | Math.sin(n) * -r.scaleY * a) / a, u = (0 | Math.cos(n) * r.scaleY * a) / a, f = this.t.style, c = this.t.currentStyle;
            if (c) {
                i = l,
                l = -h,
                h = -i,
                e = c.filter,
                f.filter = "";
                var p, _, m = this.t.offsetWidth, g = this.t.offsetHeight, v = "absolute" !== c.position, y = "progid:DXImageTransform.Microsoft.Matrix(M11=" + o + ", M12=" + l + ", M21=" + h + ", M22=" + u, w = r.x + m * r.xPercent / 100, b = r.y + g * r.yPercent / 100;
                if (null != r.ox && (p = (r.oxp ? .01 * m * r.ox : r.ox) - m / 2,
                _ = (r.oyp ? .01 * g * r.oy : r.oy) - g / 2,
                w += p - (p * o + _ * l),
                b += _ - (p * h + _ * u)),
                v ? (p = m / 2,
                _ = g / 2,
                y += ", Dx=" + (p - (p * o + _ * l) + w) + ", Dy=" + (_ - (p * h + _ * u) + b) + ")") : y += ", sizingMethod='auto expand')",
                f.filter = -1 !== e.indexOf("DXImageTransform.Microsoft.Matrix(") ? e.replace(M, y) : y + " " + e,
                (0 === t || 1 === t) && 1 === o && 0 === l && 0 === h && 1 === u && (v && -1 === y.indexOf("Dx=0, Dy=0") || T.test(e) && 100 !== parseFloat(RegExp.$1) || -1 === e.indexOf("gradient(" && e.indexOf("Alpha")) && f.removeAttribute("filter")),
                !v) {
                    var P, S, O, k = 8 > d ? 1 : -1;
                    for (p = r.ieOffsetX || 0,
                    _ = r.ieOffsetY || 0,
                    r.ieOffsetX = Math.round((m - ((0 > o ? -o : o) * m + (0 > l ? -l : l) * g)) / 2 + w),
                    r.ieOffsetY = Math.round((g - ((0 > u ? -u : u) * g + (0 > h ? -h : h) * m)) / 2 + b),
                    ge = 0; 4 > ge; ge++)
                        S = ee[ge],
                        P = c[S],
                        i = -1 !== P.indexOf("px") ? parseFloat(P) : Z(this.t, S, parseFloat(P), P.replace(x, "")) || 0,
                        O = i !== r[S] ? 2 > ge ? -r.ieOffsetX : -r.ieOffsetY : 2 > ge ? p - r.ieOffsetX : _ - r.ieOffsetY,
                        f[S] = (r[S] = Math.round(i - O * (0 === ge || 2 === ge ? 1 : k))) + "px"
                }
            }
        }, Be = I.set3DTransformRatio = I.setTransformRatio = function(t) {
            var e, i, r, s, n, a, o, l, h, u, f, c, _, d, m, g, v, y, x, T, w, b, P, S = this.data, O = this.t.style, k = S.rotation, C = S.rotationX, R = S.rotationY, A = S.scaleX, M = S.scaleY, D = S.scaleZ, L = S.x, F = S.y, X = S.z, z = S.svg, B = S.perspective, E = S.force3D;
            if (!(((1 !== t && 0 !== t || "auto" !== E || this.tween._totalTime !== this.tween._totalDuration && this.tween._totalTime) && E || X || B || R || C) && (!Te || !z) && Oe))
                return k || S.skewX || z ? (k *= N,
                b = S.skewX * N,
                P = 1e5,
                e = Math.cos(k) * A,
                s = Math.sin(k) * A,
                i = Math.sin(k - b) * -M,
                n = Math.cos(k - b) * M,
                b && "simple" === S.skewType && (v = Math.tan(b),
                v = Math.sqrt(1 + v * v),
                i *= v,
                n *= v,
                S.skewY && (e *= v,
                s *= v)),
                z && (L += S.xOrigin - (S.xOrigin * e + S.yOrigin * i) + S.xOffset,
                F += S.yOrigin - (S.xOrigin * s + S.yOrigin * n) + S.yOffset,
                Te && (S.xPercent || S.yPercent) && (d = this.t.getBBox(),
                L += .01 * S.xPercent * d.width,
                F += .01 * S.yPercent * d.height),
                d = 1e-6,
                d > L && L > -d && (L = 0),
                d > F && F > -d && (F = 0)),
                x = (0 | e * P) / P + "," + (0 | s * P) / P + "," + (0 | i * P) / P + "," + (0 | n * P) / P + "," + L + "," + F + ")",
                z && Te ? this.t.setAttribute("transform", "matrix(" + x) : O[be] = (S.xPercent || S.yPercent ? "translate(" + S.xPercent + "%," + S.yPercent + "%) matrix(" : "matrix(") + x) : O[be] = (S.xPercent || S.yPercent ? "translate(" + S.xPercent + "%," + S.yPercent + "%) matrix(" : "matrix(") + A + ",0,0," + M + "," + L + "," + F + ")",
                void 0;
            if (p && (d = 1e-4,
            d > A && A > -d && (A = D = 2e-5),
            d > M && M > -d && (M = D = 2e-5),
            !B || S.z || S.rotationX || S.rotationY || (B = 0)),
            k || S.skewX)
                k *= N,
                m = e = Math.cos(k),
                g = s = Math.sin(k),
                S.skewX && (k -= S.skewX * N,
                m = Math.cos(k),
                g = Math.sin(k),
                "simple" === S.skewType && (v = Math.tan(S.skewX * N),
                v = Math.sqrt(1 + v * v),
                m *= v,
                g *= v,
                S.skewY && (e *= v,
                s *= v))),
                i = -g,
                n = m;
            else {
                if (!(R || C || 1 !== D || B || z))
                    return O[be] = (S.xPercent || S.yPercent ? "translate(" + S.xPercent + "%," + S.yPercent + "%) translate3d(" : "translate3d(") + L + "px," + F + "px," + X + "px)" + (1 !== A || 1 !== M ? " scale(" + A + "," + M + ")" : ""),
                    void 0;
                e = n = 1,
                i = s = 0
            }
            h = 1,
            r = a = o = l = u = f = 0,
            c = B ? -1 / B : 0,
            _ = S.zOrigin,
            d = 1e-6,
            T = ",",
            w = "0",
            k = R * N,
            k && (m = Math.cos(k),
            g = Math.sin(k),
            o = -g,
            u = c * -g,
            r = e * g,
            a = s * g,
            h = m,
            c *= m,
            e *= m,
            s *= m),
            k = C * N,
            k && (m = Math.cos(k),
            g = Math.sin(k),
            v = i * m + r * g,
            y = n * m + a * g,
            l = h * g,
            f = c * g,
            r = i * -g + r * m,
            a = n * -g + a * m,
            h *= m,
            c *= m,
            i = v,
            n = y),
            1 !== D && (r *= D,
            a *= D,
            h *= D,
            c *= D),
            1 !== M && (i *= M,
            n *= M,
            l *= M,
            f *= M),
            1 !== A && (e *= A,
            s *= A,
            o *= A,
            u *= A),
            (_ || z) && (_ && (L += r * -_,
            F += a * -_,
            X += h * -_ + _),
            z && (L += S.xOrigin - (S.xOrigin * e + S.yOrigin * i) + S.xOffset,
            F += S.yOrigin - (S.xOrigin * s + S.yOrigin * n) + S.yOffset),
            d > L && L > -d && (L = w),
            d > F && F > -d && (F = w),
            d > X && X > -d && (X = 0)),
            x = S.xPercent || S.yPercent ? "translate(" + S.xPercent + "%," + S.yPercent + "%) matrix3d(" : "matrix3d(",
            x += (d > e && e > -d ? w : e) + T + (d > s && s > -d ? w : s) + T + (d > o && o > -d ? w : o),
            x += T + (d > u && u > -d ? w : u) + T + (d > i && i > -d ? w : i) + T + (d > n && n > -d ? w : n),
            C || R ? (x += T + (d > l && l > -d ? w : l) + T + (d > f && f > -d ? w : f) + T + (d > r && r > -d ? w : r),
            x += T + (d > a && a > -d ? w : a) + T + (d > h && h > -d ? w : h) + T + (d > c && c > -d ? w : c) + T) : x += ",0,0,0,0,1,0,",
            x += L + T + F + T + X + T + (B ? 1 + -X / B : 1) + ")",
            O[be] = x
        }
        ;
        h = ke.prototype,
        h.x = h.y = h.z = h.skewX = h.skewY = h.rotation = h.rotationX = h.rotationY = h.zOrigin = h.xPercent = h.yPercent = h.xOffset = h.yOffset = 0,
        h.scaleX = h.scaleY = h.scaleZ = 1,
        ye("transform,scale,scaleX,scaleY,scaleZ,x,y,z,rotation,rotationX,rotationY,rotationZ,skewX,skewY,shortRotation,shortRotationX,shortRotationY,shortRotationZ,transformOrigin,svgOrigin,transformPerspective,directionalRotation,parseTransform,force3D,skewType,xPercent,yPercent,smoothOrigin", {
            parser: function(t, e, i, r, n, o, l) {
                if (r._lastParsedTransform === l)
                    return n;
                r._lastParsedTransform = l;
                var h, u, f, c, p, _, d, m, g, v = t._gsTransform, y = r._transform = Xe(t, s, !0, l.parseTransform), x = t.style, T = 1e-6, w = we.length, b = l, P = {}, S = "transformOrigin";
                if ("string" == typeof b.transform && be)
                    f = B.style,
                    f[be] = b.transform,
                    f.display = "block",
                    f.position = "absolute",
                    X.body.appendChild(B),
                    h = Xe(B, null, !1),
                    X.body.removeChild(B),
                    null != b.xPercent && (h.xPercent = ne(b.xPercent, y.xPercent)),
                    null != b.yPercent && (h.yPercent = ne(b.yPercent, y.yPercent));
                else if ("object" == typeof b) {
                    if (h = {
                        scaleX: ne(null != b.scaleX ? b.scaleX : b.scale, y.scaleX),
                        scaleY: ne(null != b.scaleY ? b.scaleY : b.scale, y.scaleY),
                        scaleZ: ne(b.scaleZ, y.scaleZ),
                        x: ne(b.x, y.x),
                        y: ne(b.y, y.y),
                        z: ne(b.z, y.z),
                        xPercent: ne(b.xPercent, y.xPercent),
                        yPercent: ne(b.yPercent, y.yPercent),
                        perspective: ne(b.transformPerspective, y.perspective)
                    },
                    d = b.directionalRotation,
                    null != d)
                        if ("object" == typeof d)
                            for (f in d)
                                b[f] = d[f];
                        else
                            b.rotation = d;
                    "string" == typeof b.x && -1 !== b.x.indexOf("%") && (h.x = 0,
                    h.xPercent = ne(b.x, y.xPercent)),
                    "string" == typeof b.y && -1 !== b.y.indexOf("%") && (h.y = 0,
                    h.yPercent = ne(b.y, y.yPercent)),
                    h.rotation = ae("rotation"in b ? b.rotation : "shortRotation"in b ? b.shortRotation + "_short" : "rotationZ"in b ? b.rotationZ : y.rotation, y.rotation, "rotation", P),
                    Oe && (h.rotationX = ae("rotationX"in b ? b.rotationX : "shortRotationX"in b ? b.shortRotationX + "_short" : y.rotationX || 0, y.rotationX, "rotationX", P),
                    h.rotationY = ae("rotationY"in b ? b.rotationY : "shortRotationY"in b ? b.shortRotationY + "_short" : y.rotationY || 0, y.rotationY, "rotationY", P)),
                    h.skewX = null == b.skewX ? y.skewX : ae(b.skewX, y.skewX),
                    h.skewY = null == b.skewY ? y.skewY : ae(b.skewY, y.skewY),
                    (u = h.skewY - y.skewY) && (h.skewX += u,
                    h.rotation += u)
                }
                for (Oe && null != b.force3D && (y.force3D = b.force3D,
                _ = !0),
                y.skewType = b.skewType || y.skewType || a.defaultSkewType,
                p = y.force3D || y.z || y.rotationX || y.rotationY || h.z || h.rotationX || h.rotationY || h.perspective,
                p || null == b.scale || (h.scaleZ = 1); --w > -1; )
                    i = we[w],
                    c = h[i] - y[i],
                    (c > T || -T > c || null != b[i] || null != F[i]) && (_ = !0,
                    n = new _e(y,i,y[i],c,n),
                    i in P && (n.e = P[i]),
                    n.xs0 = 0,
                    n.plugin = o,
                    r._overwriteProps.push(n.n));
                return c = b.transformOrigin,
                y.svg && (c || b.svgOrigin) && (m = y.xOffset,
                g = y.yOffset,
                De(t, re(c), h, b.svgOrigin, b.smoothOrigin),
                n = de(y, "xOrigin", (v ? y : h).xOrigin, h.xOrigin, n, S),
                n = de(y, "yOrigin", (v ? y : h).yOrigin, h.yOrigin, n, S),
                (m !== y.xOffset || g !== y.yOffset) && (n = de(y, "xOffset", v ? m : y.xOffset, y.xOffset, n, S),
                n = de(y, "yOffset", v ? g : y.yOffset, y.yOffset, n, S)),
                c = Te ? null : "0px 0px"),
                (c || Oe && p && y.zOrigin) && (be ? (_ = !0,
                i = Se,
                c = (c || Q(t, i, s, !1, "50% 50%")) + "",
                n = new _e(x,i,0,0,n,-1,S),
                n.b = x[i],
                n.plugin = o,
                Oe ? (f = y.zOrigin,
                c = c.split(" "),
                y.zOrigin = (c.length > 2 && (0 === f || "0px" !== c[2]) ? parseFloat(c[2]) : f) || 0,
                n.xs0 = n.e = c[0] + " " + (c[1] || "50%") + " 0px",
                n = new _e(y,"zOrigin",0,0,n,-1,n.n),
                n.b = f,
                n.xs0 = n.e = y.zOrigin) : n.xs0 = n.e = c) : re(c + "", y)),
                _ && (r._transformType = y.svg && Te || !p && 3 !== this._transformType ? 2 : 3),
                n
            },
            prefix: !0
        }),
        ye("boxShadow", {
            defaultValue: "0px 0px 0px 0px #999",
            prefix: !0,
            color: !0,
            multi: !0,
            keyword: "inset"
        }),
        ye("borderRadius", {
            defaultValue: "0px",
            parser: function(t, e, i, n, a) {
                e = this.format(e);
                var o, l, h, u, f, c, p, _, d, m, g, v, y, x, T, w, b = ["borderTopLeftRadius", "borderTopRightRadius", "borderBottomRightRadius", "borderBottomLeftRadius"], P = t.style;
                for (d = parseFloat(t.offsetWidth),
                m = parseFloat(t.offsetHeight),
                o = e.split(" "),
                l = 0; b.length > l; l++)
                    this.p.indexOf("border") && (b[l] = q(b[l])),
                    f = u = Q(t, b[l], s, !1, "0px"),
                    -1 !== f.indexOf(" ") && (u = f.split(" "),
                    f = u[0],
                    u = u[1]),
                    c = h = o[l],
                    p = parseFloat(f),
                    v = f.substr((p + "").length),
                    y = "=" === c.charAt(1),
                    y ? (_ = parseInt(c.charAt(0) + "1", 10),
                    c = c.substr(2),
                    _ *= parseFloat(c),
                    g = c.substr((_ + "").length - (0 > _ ? 1 : 0)) || "") : (_ = parseFloat(c),
                    g = c.substr((_ + "").length)),
                    "" === g && (g = r[i] || v),
                    g !== v && (x = Z(t, "borderLeft", p, v),
                    T = Z(t, "borderTop", p, v),
                    "%" === g ? (f = 100 * (x / d) + "%",
                    u = 100 * (T / m) + "%") : "em" === g ? (w = Z(t, "borderLeft", 1, "em"),
                    f = x / w + "em",
                    u = T / w + "em") : (f = x + "px",
                    u = T + "px"),
                    y && (c = parseFloat(f) + _ + g,
                    h = parseFloat(u) + _ + g)),
                    a = me(P, b[l], f + " " + u, c + " " + h, !1, "0px", a);
                return a
            },
            prefix: !0,
            formatter: fe("0px 0px 0px 0px", !1, !0)
        }),
        ye("backgroundPosition", {
            defaultValue: "0 0",
            parser: function(t, e, i, r, n, a) {
                var o, l, h, u, f, c, p = "background-position", _ = s || H(t, null), m = this.format((_ ? d ? _.getPropertyValue(p + "-x") + " " + _.getPropertyValue(p + "-y") : _.getPropertyValue(p) : t.currentStyle.backgroundPositionX + " " + t.currentStyle.backgroundPositionY) || "0 0"), g = this.format(e);
                if (-1 !== m.indexOf("%") != (-1 !== g.indexOf("%")) && (c = Q(t, "backgroundImage").replace(k, ""),
                c && "none" !== c)) {
                    for (o = m.split(" "),
                    l = g.split(" "),
                    E.setAttribute("src", c),
                    h = 2; --h > -1; )
                        m = o[h],
                        u = -1 !== m.indexOf("%"),
                        u !== (-1 !== l[h].indexOf("%")) && (f = 0 === h ? t.offsetWidth - E.width : t.offsetHeight - E.height,
                        o[h] = u ? parseFloat(m) / 100 * f + "px" : 100 * (parseFloat(m) / f) + "%");
                    m = o.join(" ")
                }
                return this.parseComplex(t.style, m, g, n, a)
            },
            formatter: re
        }),
        ye("backgroundSize", {
            defaultValue: "0 0",
            formatter: re
        }),
        ye("perspective", {
            defaultValue: "0px",
            prefix: !0
        }),
        ye("perspectiveOrigin", {
            defaultValue: "50% 50%",
            prefix: !0
        }),
        ye("transformStyle", {
            prefix: !0
        }),
        ye("backfaceVisibility", {
            prefix: !0
        }),
        ye("userSelect", {
            prefix: !0
        }),
        ye("margin", {
            parser: ce("marginTop,marginRight,marginBottom,marginLeft")
        }),
        ye("padding", {
            parser: ce("paddingTop,paddingRight,paddingBottom,paddingLeft")
        }),
        ye("clip", {
            defaultValue: "rect(0px,0px,0px,0px)",
            parser: function(t, e, i, r, n, a) {
                var o, l, h;
                return 9 > d ? (l = t.currentStyle,
                h = 8 > d ? " " : ",",
                o = "rect(" + l.clipTop + h + l.clipRight + h + l.clipBottom + h + l.clipLeft + ")",
                e = this.format(e).split(",").join(h)) : (o = this.format(Q(t, this.p, s, !1, this.dflt)),
                e = this.format(e)),
                this.parseComplex(t.style, o, e, n, a)
            }
        }),
        ye("textShadow", {
            defaultValue: "0px 0px 0px #999",
            color: !0,
            multi: !0
        }),
        ye("autoRound,strictUnits", {
            parser: function(t, e, i, r, s) {
                return s
            }
        }),
        ye("border", {
            defaultValue: "0px solid #000",
            parser: function(t, e, i, r, n, a) {
                return this.parseComplex(t.style, this.format(Q(t, "borderTopWidth", s, !1, "0px") + " " + Q(t, "borderTopStyle", s, !1, "solid") + " " + Q(t, "borderTopColor", s, !1, "#000")), this.format(e), n, a)
            },
            color: !0,
            formatter: function(t) {
                var e = t.split(" ");
                return e[0] + " " + (e[1] || "solid") + " " + (t.match(ue) || ["#000"])[0]
            }
        }),
        ye("borderWidth", {
            parser: ce("borderTopWidth,borderRightWidth,borderBottomWidth,borderLeftWidth")
        }),
        ye("float,cssFloat,styleFloat", {
            parser: function(t, e, i, r, s) {
                var n = t.style
                  , a = "cssFloat"in n ? "cssFloat" : "styleFloat";
                return new _e(n,a,0,0,s,-1,i,!1,0,n[a],e)
            }
        });
        var Ee = function(t) {
            var e, i = this.t, r = i.filter || Q(this.data, "filter") || "", s = 0 | this.s + this.c * t;
            100 === s && (-1 === r.indexOf("atrix(") && -1 === r.indexOf("radient(") && -1 === r.indexOf("oader(") ? (i.removeAttribute("filter"),
            e = !Q(this.data, "filter")) : (i.filter = r.replace(b, ""),
            e = !0)),
            e || (this.xn1 && (i.filter = r = r || "alpha(opacity=" + s + ")"),
            -1 === r.indexOf("pacity") ? 0 === s && this.xn1 || (i.filter = r + " alpha(opacity=" + s + ")") : i.filter = r.replace(T, "opacity=" + s))
        };
        ye("opacity,alpha,autoAlpha", {
            defaultValue: "1",
            parser: function(t, e, i, r, n, a) {
                var o = parseFloat(Q(t, "opacity", s, !1, "1"))
                  , l = t.style
                  , h = "autoAlpha" === i;
                return "string" == typeof e && "=" === e.charAt(1) && (e = ("-" === e.charAt(0) ? -1 : 1) * parseFloat(e.substr(2)) + o),
                h && 1 === o && "hidden" === Q(t, "visibility", s) && 0 !== e && (o = 0),
                W ? n = new _e(l,"opacity",o,e - o,n) : (n = new _e(l,"opacity",100 * o,100 * (e - o),n),
                n.xn1 = h ? 1 : 0,
                l.zoom = 1,
                n.type = 2,
                n.b = "alpha(opacity=" + n.s + ")",
                n.e = "alpha(opacity=" + (n.s + n.c) + ")",
                n.data = t,
                n.plugin = a,
                n.setRatio = Ee),
                h && (n = new _e(l,"visibility",0,0,n,-1,null,!1,0,0 !== o ? "inherit" : "hidden",0 === e ? "hidden" : "inherit"),
                n.xs0 = "inherit",
                r._overwriteProps.push(n.n),
                r._overwriteProps.push(i)),
                n
            }
        });
        var Ie = function(t, e) {
            e && (t.removeProperty ? (("ms" === e.substr(0, 2) || "webkit" === e.substr(0, 6)) && (e = "-" + e),
            t.removeProperty(e.replace(S, "-$1").toLowerCase())) : t.removeAttribute(e))
        }
          , Ye = function(t) {
            if (this.t._gsClassPT = this,
            1 === t || 0 === t) {
                this.t.setAttribute("class", 0 === t ? this.b : this.e);
                for (var e = this.data, i = this.t.style; e; )
                    e.v ? i[e.p] = e.v : Ie(i, e.p),
                    e = e._next;
                1 === t && this.t._gsClassPT === this && (this.t._gsClassPT = null)
            } else
                this.t.getAttribute("class") !== this.e && this.t.setAttribute("class", this.e)
        };
        ye("className", {
            parser: function(t, e, r, n, a, o, l) {
                var h, u, f, c, p, _ = t.getAttribute("class") || "", d = t.style.cssText;
                if (a = n._classNamePT = new _e(t,r,0,0,a,2),
                a.setRatio = Ye,
                a.pr = -11,
                i = !0,
                a.b = _,
                u = K(t, s),
                f = t._gsClassPT) {
                    for (c = {},
                    p = f.data; p; )
                        c[p.p] = 1,
                        p = p._next;
                    f.setRatio(1)
                }
                return t._gsClassPT = a,
                a.e = "=" !== e.charAt(1) ? e : _.replace(RegExp("\\s*\\b" + e.substr(2) + "\\b"), "") + ("+" === e.charAt(0) ? " " + e.substr(2) : ""),
                t.setAttribute("class", a.e),
                h = J(t, u, K(t), l, c),
                t.setAttribute("class", _),
                a.data = h.firstMPT,
                t.style.cssText = d,
                a = a.xfirst = n.parse(t, h.difs, a, o)
            }
        });
        var We = function(t) {
            if ((1 === t || 0 === t) && this.data._totalTime === this.data._totalDuration && "isFromStart" !== this.data.data) {
                var e, i, r, s, n, a = this.t.style, o = l.transform.parse;
                if ("all" === this.e)
                    a.cssText = "",
                    s = !0;
                else
                    for (e = this.e.split(" ").join("").split(","),
                    r = e.length; --r > -1; )
                        i = e[r],
                        l[i] && (l[i].parse === o ? s = !0 : i = "transformOrigin" === i ? Se : l[i].p),
                        Ie(a, i);
                s && (Ie(a, be),
                n = this.t._gsTransform,
                n && (n.svg && this.t.removeAttribute("data-svg-origin"),
                delete this.t._gsTransform))
            }
        };
        for (ye("clearProps", {
            parser: function(t, e, r, s, n) {
                return n = new _e(t,r,0,0,n,2),
                n.setRatio = We,
                n.e = e,
                n.pr = -10,
                n.data = s._tween,
                i = !0,
                n
            }
        }),
        h = "bezier,throwProps,physicsProps,physics2D".split(","),
        ge = h.length; ge--; )
            xe(h[ge]);
        h = a.prototype,
        h._firstPT = h._lastParsedTransform = h._transform = null,
        h._onInitTween = function(t, e, o) {
            if (!t.nodeType)
                return !1;
            this._target = t,
            this._tween = o,
            this._vars = e,
            u = e.autoRound,
            i = !1,
            r = e.suffixMap || a.suffixMap,
            s = H(t, ""),
            n = this._overwriteProps;
            var h, p, d, m, g, v, y, x, T, b = t.style;
            if (f && "" === b.zIndex && (h = Q(t, "zIndex", s),
            ("auto" === h || "" === h) && this._addLazySet(b, "zIndex", 0)),
            "string" == typeof e && (m = b.cssText,
            h = K(t, s),
            b.cssText = m + ";" + e,
            h = J(t, h, K(t)).difs,
            !W && w.test(e) && (h.opacity = parseFloat(RegExp.$1)),
            e = h,
            b.cssText = m),
            this._firstPT = p = e.className ? l.className.parse(t, e.className, "className", this, null, null, e) : this.parse(t, e, null),
            this._transformType) {
                for (T = 3 === this._transformType,
                be ? c && (f = !0,
                "" === b.zIndex && (y = Q(t, "zIndex", s),
                ("auto" === y || "" === y) && this._addLazySet(b, "zIndex", 0)),
                _ && this._addLazySet(b, "WebkitBackfaceVisibility", this._vars.WebkitBackfaceVisibility || (T ? "visible" : "hidden"))) : b.zoom = 1,
                d = p; d && d._next; )
                    d = d._next;
                x = new _e(t,"transform",0,0,null,2),
                this._linkCSSP(x, null, d),
                x.setRatio = be ? Be : ze,
                x.data = this._transform || Xe(t, s, !0),
                x.tween = o,
                x.pr = -1,
                n.pop()
            }
            if (i) {
                for (; p; ) {
                    for (v = p._next,
                    d = m; d && d.pr > p.pr; )
                        d = d._next;
                    (p._prev = d ? d._prev : g) ? p._prev._next = p : m = p,
                    (p._next = d) ? d._prev = p : g = p,
                    p = v
                }
                this._firstPT = m
            }
            return !0
        }
        ,
        h.parse = function(t, e, i, n) {
            var a, o, h, f, c, p, _, d, m, g, v = t.style;
            for (a in e)
                p = e[a],
                o = l[a],
                o ? i = o.parse(t, p, a, this, i, n, e) : (c = Q(t, a, s) + "",
                m = "string" == typeof p,
                "color" === a || "fill" === a || "stroke" === a || -1 !== a.indexOf("Color") || m && P.test(p) ? (m || (p = he(p),
                p = (p.length > 3 ? "rgba(" : "rgb(") + p.join(",") + ")"),
                i = me(v, a, c, p, !0, "transparent", i, 0, n)) : !m || -1 === p.indexOf(" ") && -1 === p.indexOf(",") ? (h = parseFloat(c),
                _ = h || 0 === h ? c.substr((h + "").length) : "",
                ("" === c || "auto" === c) && ("width" === a || "height" === a ? (h = ie(t, a, s),
                _ = "px") : "left" === a || "top" === a ? (h = $(t, a, s),
                _ = "px") : (h = "opacity" !== a ? 0 : 1,
                _ = "")),
                g = m && "=" === p.charAt(1),
                g ? (f = parseInt(p.charAt(0) + "1", 10),
                p = p.substr(2),
                f *= parseFloat(p),
                d = p.replace(x, "")) : (f = parseFloat(p),
                d = m ? p.replace(x, "") : ""),
                "" === d && (d = a in r ? r[a] : _),
                p = f || 0 === f ? (g ? f + h : f) + d : e[a],
                _ !== d && "" !== d && (f || 0 === f) && h && (h = Z(t, a, h, _),
                "%" === d ? (h /= Z(t, a, 100, "%") / 100,
                e.strictUnits !== !0 && (c = h + "%")) : "em" === d ? h /= Z(t, a, 1, "em") : "px" !== d && (f = Z(t, a, f, d),
                d = "px"),
                g && (f || 0 === f) && (p = f + h + d)),
                g && (f += h),
                !h && 0 !== h || !f && 0 !== f ? void 0 !== v[a] && (p || "NaN" != p + "" && null != p) ? (i = new _e(v,a,f || h || 0,0,i,-1,a,!1,0,c,p),
                i.xs0 = "none" !== p || "display" !== a && -1 === a.indexOf("Style") ? p : c) : j("invalid " + a + " tween value: " + e[a]) : (i = new _e(v,a,h,f - h,i,0,a,u !== !1 && ("px" === d || "zIndex" === a),0,c,p),
                i.xs0 = d)) : i = me(v, a, c, p, !0, null, i, 0, n)),
                n && i && !i.plugin && (i.plugin = n);
            return i
        }
        ,
        h.setRatio = function(t) {
            var e, i, r, s = this._firstPT, n = 1e-6;
            if (1 !== t || this._tween._time !== this._tween._duration && 0 !== this._tween._time)
                if (t || this._tween._time !== this._tween._duration && 0 !== this._tween._time || this._tween._rawPrevTime === -1e-6)
                    for (; s; ) {
                        if (e = s.c * t + s.s,
                        s.r ? e = Math.round(e) : n > e && e > -n && (e = 0),
                        s.type)
                            if (1 === s.type)
                                if (r = s.l,
                                2 === r)
                                    s.t[s.p] = s.xs0 + e + s.xs1 + s.xn1 + s.xs2;
                                else if (3 === r)
                                    s.t[s.p] = s.xs0 + e + s.xs1 + s.xn1 + s.xs2 + s.xn2 + s.xs3;
                                else if (4 === r)
                                    s.t[s.p] = s.xs0 + e + s.xs1 + s.xn1 + s.xs2 + s.xn2 + s.xs3 + s.xn3 + s.xs4;
                                else if (5 === r)
                                    s.t[s.p] = s.xs0 + e + s.xs1 + s.xn1 + s.xs2 + s.xn2 + s.xs3 + s.xn3 + s.xs4 + s.xn4 + s.xs5;
                                else {
                                    for (i = s.xs0 + e + s.xs1,
                                    r = 1; s.l > r; r++)
                                        i += s["xn" + r] + s["xs" + (r + 1)];
                                    s.t[s.p] = i
                                }
                            else
                                -1 === s.type ? s.t[s.p] = s.xs0 : s.setRatio && s.setRatio(t);
                        else
                            s.t[s.p] = e + s.xs0;
                        s = s._next
                    }
                else
                    for (; s; )
                        2 !== s.type ? s.t[s.p] = s.b : s.setRatio(t),
                        s = s._next;
            else
                for (; s; ) {
                    if (2 !== s.type)
                        if (s.r && -1 !== s.type)
                            if (e = Math.round(s.s + s.c),
                            s.type) {
                                if (1 === s.type) {
                                    for (r = s.l,
                                    i = s.xs0 + e + s.xs1,
                                    r = 1; s.l > r; r++)
                                        i += s["xn" + r] + s["xs" + (r + 1)];
                                    s.t[s.p] = i
                                }
                            } else
                                s.t[s.p] = e + s.xs0;
                        else
                            s.t[s.p] = s.e;
                    else
                        s.setRatio(t);
                    s = s._next
                }
        }
        ,
        h._enableTransforms = function(t) {
            this._transform = this._transform || Xe(this._target, s, !0),
            this._transformType = this._transform.svg && Te || !t && 3 !== this._transformType ? 2 : 3
        }
        ;
        var Ve = function() {
            this.t[this.p] = this.e,
            this.data._linkCSSP(this, this._next, null, !0)
        };
        h._addLazySet = function(t, e, i) {
            var r = this._firstPT = new _e(t,e,0,0,this._firstPT,2);
            r.e = i,
            r.setRatio = Ve,
            r.data = this
        }
        ,
        h._linkCSSP = function(t, e, i, r) {
            return t && (e && (e._prev = t),
            t._next && (t._next._prev = t._prev),
            t._prev ? t._prev._next = t._next : this._firstPT === t && (this._firstPT = t._next,
            r = !0),
            i ? i._next = t : r || null !== this._firstPT || (this._firstPT = t),
            t._next = e,
            t._prev = i),
            t
        }
        ,
        h._kill = function(e) {
            var i, r, s, n = e;
            if (e.autoAlpha || e.alpha) {
                n = {};
                for (r in e)
                    n[r] = e[r];
                n.opacity = 1,
                n.autoAlpha && (n.visibility = 1)
            }
            return e.className && (i = this._classNamePT) && (s = i.xfirst,
            s && s._prev ? this._linkCSSP(s._prev, i._next, s._prev._prev) : s === this._firstPT && (this._firstPT = i._next),
            i._next && this._linkCSSP(i._next, i._next._next, s._prev),
            this._classNamePT = null),
            t.prototype._kill.call(this, n)
        }
        ;
        var je = function(t, e, i) {
            var r, s, n, a;
            if (t.slice)
                for (s = t.length; --s > -1; )
                    je(t[s], e, i);
            else
                for (r = t.childNodes,
                s = r.length; --s > -1; )
                    n = r[s],
                    a = n.type,
                    n.style && (e.push(K(n)),
                    i && i.push(n)),
                    1 !== a && 9 !== a && 11 !== a || !n.childNodes.length || je(n, e, i)
        };
        return a.cascadeTo = function(t, i, r) {
            var s, n, a, o, l = e.to(t, i, r), h = [l], u = [], f = [], c = [], p = e._internals.reservedProps;
            for (t = l._targets || l.target,
            je(t, u, c),
            l.render(i, !0, !0),
            je(t, f),
            l.render(0, !0, !0),
            l._enabled(!0),
            s = c.length; --s > -1; )
                if (n = J(c[s], u[s], f[s]),
                n.firstMPT) {
                    n = n.difs;
                    for (a in r)
                        p[a] && (n[a] = r[a]);
                    o = {};
                    for (a in n)
                        o[a] = u[s][a];
                    h.push(e.fromTo(c[s], i, o, n))
                }
            return h
        }
        ,
        t.activate([a]),
        a
    }, !0)
}),
_gsScope._gsDefine && _gsScope._gsQueue.pop()(),
function(t) {
    "use strict";
    var e = function() {
        return (_gsScope.GreenSockGlobals || _gsScope)[t]
    };
    "function" == typeof define && define.amd ? define(["TweenLite"], e) : "undefined" != typeof module && module.exports && (require("../TweenLite.js"),
    module.exports = e())
}("CSSPlugin");
